home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / basic / cursor.lha / Cursor / Examples / Mandelbrot / ManSing.bas < prev    next >
Encoding:
BASIC Source File  |  1992-09-02  |  1.8 KB  |  80 lines

  1.  
  2. ' AmigaBASIC needs about 13500 s. for this program, the compiled
  3. ' version about 2340 s.
  4.  
  5.  OPTION NOWINDOW,SOMEPCRELATIVE
  6.  
  7.  XLPos = -2.4
  8.  XRPos = .8
  9.  YDPos = -1.2
  10.  YUPos = 1.2
  11.  
  12.  MaxIter% = 32
  13.  
  14.  SCREEN 2,640,200,4,2
  15.  WINDOW 2,"Mandelbrot",,8,2
  16.  
  17.  PALETTE 0,0,0,0
  18.  PALETTE 1,1,1,1
  19.  c1 = 0 : c2 = .5 : c3 = 1 : dc1 = 1/6.5 : dc2 = 1/6.5 : dc3 = 1/6.5
  20.  FOR a% = 2 TO 15
  21.    IF c1+dc1 < 0 OR c1+dc1 > 1 THEN dc1 = -dc1
  22.    c1 = c1+dc1
  23.    IF c2+dc2 < 0 OR c2+dc2 > 1 THEN dc2 = -dc2
  24.    c2 = c2+dc2
  25.    IF c3+dc3 < 0 OR c3+dc3 > 1 THEN dc3 = -dc3
  26.    c3 = c3+dc3
  27.    PALETTE a%,c1,c2,c3
  28.  NEXT a%
  29.  
  30.  t& = TIMER
  31.  
  32.  XSize = XRPos-XLPos
  33.  YSize = YUPos-YDPos
  34.  
  35.  XPixelSize = WINDOW(2)
  36.  YPixelSize = WINDOW(3)
  37.  
  38.  mystep% = 1024
  39.  WHILE mystep%
  40.    FOR px% = 0 TO XPixelSize-1 STEP mystep%
  41.      FOR py% = 0 TO YPixelSize-1 STEP mystep%
  42.        IF (px% AND mystep%) OR (py% AND mystep%) OR (mystep% = 1024) THEN
  43.          c.r = XLPos+px%/XPixelSize*XSize
  44.          c.i = YDPos+(YPixelSize-1-py%)/YPixelSize*YSize
  45.          x.r = 0
  46.          x.i = 0
  47.          num% = 0
  48.          x.r.quadrat = x.r*x.r
  49.          x.i.quadrat = x.i*x.i
  50.          WHILE x.r.quadrat+x.i.quadrat < 1000 AND num% < MaxIter%
  51.            x.i = (x.r+x.r)*x.i+c.i
  52.            x.r = x.r.quadrat-x.i.quadrat+c.r
  53.            x.r.quadrat = x.r*x.r
  54.            x.i.quadrat = x.i*x.i
  55.            num% = num%+1
  56.          WEND
  57.          IF num% = MaxIter% THEN
  58.            mycolor% = 0
  59.          ELSE
  60.            mycolor% = 2+(num% MOD 14)
  61.          END IF
  62.          IF mystep% = 1 THEN
  63.            PSET (px%,py%),mycolor%
  64.          ELSE
  65.            LINE (px%,py%)-(px%+mystep%-1,py%+mystep%-1),mycolor%,BF
  66.          END IF
  67.        END IF
  68.      NEXT
  69.    NEXT
  70.    mystep% = mystep%\2
  71.  WEND
  72.  
  73.  WINDOW 2,"Time:"+STR$((TIMER-t&+86400&) MOD 86400&)+" s."
  74.  BEEP
  75.  WHILE INKEY$ <> ""
  76.  WEND
  77.  WHILE INKEY$ = ""
  78.  WEND
  79.  
  80.